Veamos el ejemplo oficial:
private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _binding = ResultProfileBinding.inflate(inflater, container, false) val view = binding.root return view } override fun onDestroyView() { super.onDestroyView() _binding = null } ¿Por qué hay 2 variables similares: _binding y binding ? ¿Por qué no podemos usar una variable?
Esto es para tener una vista que no acepta valores NULL de la propiedad binding por conveniencia en el resto del código, pero aún tiene la posibilidad de administrar el valor real que acepta valores NULL en onCreateView / onDestroyView a través _binding .
El enfoque de lateinit en actividades es mejor, pero con lateinit no puede "restablecer" el enlace de nuevo a nulo, por lo que no es aplicable para fragmentos.